/**
 * @author  lixiaoshuang@zbj.com
 * @date  2017-01-13
 * @desc  全局js文件，主要写项目通用方法或者全局变量
 */

// 工具库
const util = require('./utils/util.js');

// 排行榜类型数组
let typeArray = [
    {type:'xlph',topId:23,title:'销量排行榜'},
    {type:'rgph',topId:26,title:'热歌排行榜'},
    {type:'ndph',topId:5,title:'内地排行榜'},
    {type:'gtph',topId:6,title:'港台排行榜'},
    {type:'myph',topId:18,title:'民谣排行榜'},
    {type:'ygph',topId:19,title:'摇滚排行榜'},
    {type:'omph',topId:3,title:'欧美排行榜'},
    {type:'hgph',topId:16,title:'韩国排行榜'}
];

// 配置
let config = {
	// 工具库
	util,
	
	// 排行榜类型数组
	typeArray,

	// 数据缓存
	globalData: {},

	// 获取排行榜数据
	getData: function(cb){
		let me = this,
			reqCount = 0,	// 请求回调次数，用于判断是否请求完成
			isTiped = false;	// 判断是否弹出错误提示

		this.typeArray.forEach((v) =>{
			// 重新加载
			let callback = (err,data) => {
				if(err && !isTiped){
					isTiped = true;
					util.alert(err.msg, function(){
						isTiped = false;
						setTimeout(function(){
							me.getData(cb);
						}, 1000);
					}, '重新加载');
				}else{
					me.globalData[v.type] = data;
					reqCount++;
					if(reqCount == me.typeArray.length){
						cb && cb(me.globalData);
					}
				}
			};

			// 请求数据
			util.getPhData(v, callback);
		});
	}
};

// 注册程序
App(config);